package br.com.jmed.control;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.inject.Inject;

import br.com.jmed.model.OutrosProfissionai;
import br.com.jmed.service.OutrosProfissionaisService;

@ManagedBean(name = "outrosProfissionaisControl")
@SessionScoped
public class OutrosProfissionaisControl extends BaseControl implements
		Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@EJB
	private OutrosProfissionaisService outrosProfissionaisService;

	@Inject
	private OutrosProfissionai outrosProfissionai;

	private OutrosProfissionai outrosProfissionaiSelect;

	private List<OutrosProfissionai> listOutrosProfissionai;

	public String salvarCadastroOutrosProfissionai() throws IOException {
		listOutrosProfissionai = new ArrayList<OutrosProfissionai>();
		outrosProfissionai.setUsuarioInclusao(getUsuario());
		outrosProfissionai.setDataInclusao(new Date());
		outrosProfissionaisService
				.salvarOutrosProfissionais(outrosProfissionai);
		this.outrosProfissionai = new OutrosProfissionai();
		return "/pages/outrosprofissionais/outrosProfissionaiBusca.xhtml";
	}

	public String novoCadastroOutrosProfissionai() throws IOException {
		this.outrosProfissionai = new OutrosProfissionai();
		this.listOutrosProfissionai = new ArrayList<OutrosProfissionai>();
		return "/pages/outrosprofissionais/outrosProfissionaiIncluir.xhtml";
	}

	public String alterarCadastroOutrosProfissionai() throws IOException {
		listOutrosProfissionai = new ArrayList<OutrosProfissionai>();
		outrosProfissionaiSelect.setUsuarioAlteracao(getUsuario());
		outrosProfissionaiSelect.setDataAlteracao(new Date());
		outrosProfissionaisService
				.atualizarOutrosProfissionais(outrosProfissionaiSelect);
		outrosProfissionaiSelect = new OutrosProfissionai();
		listOutrosProfissionai = outrosProfissionaisService
				.findAllOutrosProfissionais();
		return "/pages/outrosprofissionais/outrosProfissionaiBusca.xhtml";
	}

	public String abrirAlterarOutrosProfissionai(
			OutrosProfissionai outrosProfissionai) {
		this.outrosProfissionaiSelect = outrosProfissionaisService
				.findOutrosProfissionaisByCod(outrosProfissionai.getCodigo());
		return "/pages/outrosprofissionais/outrosProfissionaiAlterar.xhtml";
	}

	public void pesquisarOutrosProfissionai() {
		listOutrosProfissionai = new ArrayList<OutrosProfissionai>();
		if (outrosProfissionai.getCodigo() != 0) {
			outrosProfissionai = outrosProfissionaisService
					.findOutrosProfissionaisByCod(outrosProfissionai
							.getCodigo());
			listOutrosProfissionai.add(outrosProfissionai);
		} else if (!outrosProfissionai.getNome().trim().equals("")) {
			listOutrosProfissionai = outrosProfissionaisService
					.findOutrosProfissionaisByNome(outrosProfissionai.getNome());
		} else {
			listOutrosProfissionai = outrosProfissionaisService
					.findAllOutrosProfissionais();
		}
		outrosProfissionai = new OutrosProfissionai();
	}

	public List<String> pesquisarAutoCompOutrosProfissionai(String prefix) {
		List<String> toReturn = new ArrayList<String>();
		listOutrosProfissionai = new ArrayList<OutrosProfissionai>();
		listOutrosProfissionai = outrosProfissionaisService
				.findAllOutrosProfissionais();
		for (OutrosProfissionai m : listOutrosProfissionai) {
			if (m.getNome().startsWith(prefix)) {
				toReturn.add(m.getNome());
			}
		}
		return toReturn;
	}

	public OutrosProfissionaisService getOutrosProfissionaisService() {
		return outrosProfissionaisService;
	}

	public void setOutrosProfissionaisService(
			OutrosProfissionaisService outrosProfissionaisService) {
		this.outrosProfissionaisService = outrosProfissionaisService;
	}

	public OutrosProfissionai getOutrosProfissionai() {
		return outrosProfissionai;
	}

	public void setOutrosProfissionai(OutrosProfissionai outrosProfissionai) {
		this.outrosProfissionai = outrosProfissionai;
	}

	public OutrosProfissionai getOutrosProfissionaiSelect() {
		return outrosProfissionaiSelect;
	}

	public void setOutrosProfissionaiSelect(
			OutrosProfissionai outrosProfissionaiSelect) {
		this.outrosProfissionaiSelect = outrosProfissionaiSelect;
	}

	public List<OutrosProfissionai> getListOutrosProfissionai() {
		return listOutrosProfissionai;
	}

	public void setListOutrosProfissionai(
			List<OutrosProfissionai> listOutrosProfissionai) {
		this.listOutrosProfissionai = listOutrosProfissionai;
	}
	
}
